package org.villacoapa.componentes.registro
{
	import mx.collections.ArrayCollection;
	import mx.collections.ListCollectionView;
	import mx.controls.Alert;
	
	import org.villacoapa.beans.Cargo;
	import org.villacoapa.beans.Feligresia;
	import org.villacoapa.util.Constantes;
	
	public class Registro
	{
		
		public function clearRegistro(registro:Object):void{
			var pas1:Paso1 = registro.paso1 as Paso1;
			var pas2:Paso2 = registro.paso2 as Paso2;
			var pas3:Paso3 = registro.paso3 as Paso3;
			pas1.clear();
			pas2.clear();
			pas3.clear();
		}
		
		public function obtenerRegistro(registro:Object):String{
			var pas1:Paso1 = registro.paso1 as Paso1;
			var pas2:Paso2 = registro.paso2 as Paso2;
			var pas3:Paso3 = registro.paso3 as Paso3;
			var reg:String = null;
			
			if(!pas1.validate()){
				Alert.show("Por favor verifique que haya proporcionado todos los campos requeridos en el Paso 1",
						"Paso 1");
			}else{
				var strPaso1:String = obtenerPaso1(pas1);
				var strPaso2:String = obtenerPaso2(pas2);
				var strPaso3:String = obtenerPaso3(pas3);
				reg = strPaso1+strPaso2+strPaso3;
			}
			trace(reg);
			return reg;
		}
		
		private function obtenerPaso1(pas1:Paso1):String{
			var paterno:String = "";
			var materno:String = "";
			var fechaNac:String = "";
			if(pas1.familia.selectFamily.dgrFamilia.selectedItem != null){
				paterno = pas1.familia.selectFamily.dgrFamilia.selectedItem.apellido1;
				materno = pas1.familia.selectFamily.dgrFamilia.selectedItem.apellido2;
			}
			if(pas1.nombre.chkFechaNac.selected){
				fechaNac = pas1.nombre.fechaNac.text;
			}
			var strPaso1:String = "<nombre>"+pas1.nombre.txtNombre.text+"</nombre>"+
				"<paterno>"+pas1.nombre.txtPaterno.text+"</paterno>"+
				"<materno>"+pas1.nombre.txtMaterno.text+"</materno>"+
				"<sexo>"+pas1.nombre.rdbSexo.selectedValue+"</sexo>"+
				"<edoCivil>"+pas1.nombre.cbxEdoCivil.selectedItem.data+"</edoCivil>"+
				"<telCasa>"+pas1.contacto.txtTelCasa.text+"</telCasa>"+
				"<telCel>"+pas1.contacto.txtTelCel.text+"</telCel>"+
				"<email>"+pas1.contacto.txtMail.text+"</email>"+
				"<calle>"+pas1.contacto.txtCalle.text+"</calle>"+
				"<colonia>"+pas1.contacto.txtColonia.text+"</colonia>"+
				"<delegacion>"+pas1.contacto.cbxDelegacion.selectedItem.data+"</delegacion>"+
				"<cp>"+pas1.contacto.txtCP.text+"</cp>"+
				
				"<familia><paterno>"+paterno+"</paterno><materno>"+materno+"</materno></familia>"+
				"<fechaNac>"+fechaNac+"</fechaNac>";
				strPaso1 += "<foto>";
				if(pas1.foto.photo.source.toString().indexOf(Constantes.DEFAULT_FOTO)<0){
					strPaso1 += pas1.foto.photo.source;
				}
				strPaso1 += "</foto>";
			return strPaso1;
		}
		
		private function obtenerPaso2(pas2:Paso2):String{
			var temasInteres:String = "";
			
			var strPaso2:String = 
				"<ocupacion>"+pas2.ocupacion.cbxOcupacion.selectedItem.data+"</ocupacion>"+
				//"<compania>"+pas2.ocupacion.txtCompania.text+"</compania>"+
				"<habilidades>"+pas2.ocupacion.txtHabilidades.text+"</habilidades>"+
				"<padecimientos>"+pas2.padecimiento.lstPadecimientoDestino.dataProvider+"</padecimientos>"+
				"<subareas>";
			if(pas2.areasInteres.listSubareasDestino.dataProvider != null){
				var subareas:ArrayCollection = pas2.areasInteres.listSubareasDestino.dataProvider as ArrayCollection;
				if(subareas != null){
					for(var i:int=0; i<subareas.length;i++){
						strPaso2+=subareas[i].data+",";
					}
				}
			}
			strPaso2 += "</subareas>";
			
			if(pas2.temasInteres.lstDestinoTemasInteres.dataProvider != null){
				var arTemasInteres:ArrayCollection = pas2.temasInteres.lstDestinoTemasInteres.dataProvider as ArrayCollection;
				if(arTemasInteres != null){
					for(var m:int=0; m<arTemasInteres.length;m++){
						temasInteres+=arTemasInteres[m].data+",";
					}
				}
			}
			strPaso2 += "<temasInteres>"+temasInteres+"</temasInteres>";
			return strPaso2;
		}
		
		private function obtenerPaso3(pas3:Paso3):String{
			var bautizo:String = "";
			var feligresias:String = "";
			var cargosLlevados:String = "";
			var cargosDeseados:String = "";
			
			
			bautizo+="<Bautizo>";
			if(pas3.infoIglesia.chbBautizado.selected){
				bautizo+="<fechaBautizo>"+pas3.infoIglesia.fechaBautizo.text+"</fechaBautizo>";
				if(pas3.infoIglesia.infoBautizo.iglesia != null){ //Al menos Se abrio el popup bautizo y se dio clic en aceptar
					bautizo+="<iglesiaBautizo>"+pas3.infoIglesia.infoBautizo.iglesia+"</iglesiaBautizo>";
					bautizo+="<distritoBautizo>"+pas3.infoIglesia.infoBautizo.distrito+"</distritoBautizo>";
					var edo:String = null;
					if(pas3.infoIglesia.infoBautizo.paisMexico){
						edo = pas3.infoIglesia.infoBautizo.estado.label;
					}else{
						edo = pas3.infoIglesia.infoBautizo.estado.toString();
					}
					bautizo+="<estado>"+edo+"</estado>";
					bautizo+="<paisBautizo>"+pas3.infoIglesia.infoBautizo.pais+"</paisBautizo>";
					bautizo+="<pastorBautizo>"+pas3.infoIglesia.infoBautizo.pastor+"</pastorBautizo>";
				}
			}
			bautizo+="</Bautizo>";
			if(pas3.otraFeligresia.dgrFeligresias.dataProvider != null){
				var lstFeligresias:ListCollectionView = pas3.otraFeligresia.dgrFeligresias.dataProvider as ListCollectionView;
				for(var i:int; i<lstFeligresias.length; i++){
					feligresias+="<OtraFeligrecia>";
					feligresias+="<iglesia>"+(lstFeligresias[i] as Feligresia).iglesia+"</iglesia>";
					feligresias+="<distrito>"+(lstFeligresias[i] as Feligresia).distrito+"</distrito>";
					feligresias+="<estado>"+(lstFeligresias[i] as Feligresia).estado.toString()+"</estado>";
					feligresias+="<pais>"+(lstFeligresias[i] as Feligresia).pais+"</pais>";
					feligresias+="<anioInicio>"+(lstFeligresias[i] as Feligresia).anioInicio+"</anioInicio>";
					feligresias+="<anioFin>"+(lstFeligresias[i] as Feligresia).anioFin+"</anioFin>";
					feligresias+="</OtraFeligrecia>";
				}
			}
			if(pas3.cargoLlevado.dgrCargosLlevados.dataProvider != null){
				var lstCargosLlevados:ListCollectionView = pas3.cargoLlevado.dgrCargosLlevados.dataProvider as ListCollectionView;
				for(var j:int; j<lstCargosLlevados.length; j++){
					cargosLlevados+="<MiembroCargoLlevado>";
					cargosLlevados+="<desde>"+(lstCargosLlevados[j] as Cargo).anioInicio+"</desde>";
					cargosLlevados+="<hasta>"+(lstCargosLlevados[j] as Cargo).anioFin+"</hasta>";
					cargosLlevados+="<iglesia>"+(lstCargosLlevados[j] as Cargo).iglesia+"</iglesia>";
					cargosLlevados+="<distrito>"+(lstCargosLlevados[j] as Cargo).distrito+"</distrito>";
					var edoCargoLlevado:String = null;
					if((lstCargosLlevados[j] as Cargo).paisMexico){
						edoCargoLlevado = (lstCargosLlevados[j] as Cargo).estado.label;
					}else{
						edoCargoLlevado = (lstCargosLlevados[j] as Cargo).estado.toString();
					}
					cargosLlevados+="<estado>"+edoCargoLlevado+"</estado>";
					cargosLlevados+="<pais>"+(lstCargosLlevados[j] as Cargo).pais+"</pais>";
					cargosLlevados+="<cargo>";
						cargosLlevados+="<departamento><idDepartamento>"+(lstCargosLlevados[j] as Cargo).departamento.data+"</idDepartamento></departamento>";
						cargosLlevados+="<posicionCargo><idPosicion>"+(lstCargosLlevados[j] as Cargo).posicion.data+"</idPosicion></posicionCargo>";
					cargosLlevados+="</cargo>";
					cargosLlevados+="</MiembroCargoLlevado>";
				}
			}
			if(pas3.cargoAgrado.dgrCargosAgrado.dataProvider != null){
				var lstCargosAgrado:ListCollectionView = pas3.cargoAgrado.dgrCargosAgrado.dataProvider as ListCollectionView;
				for(var k:int; k<lstCargosAgrado.length; k++){
					cargosDeseados+="<MiembroCargoDeseado>";
					cargosDeseados+="<cargo>";
						cargosDeseados+="<departamento><idDepartamento>"+(lstCargosAgrado[k] as Cargo).departamento.data+"</idDepartamento></departamento>";
						cargosDeseados+="<posicionCargo><idPosicion>"+(lstCargosAgrado[k] as Cargo).posicion.data+"</idPosicion></posicionCargo>";
					cargosDeseados+="</cargo>";
					cargosDeseados+="</MiembroCargoDeseado>";
				}
			}
			
			
			var strPaso3:String = 
				bautizo+
				"<estatus>"+pas3.infoIglesia.cbxEstatusMiembro.selectedItem.data+"</estatus>"+
				"<asisteDesde>"+pas3.infoIglesia.fechaAsiste.text+"</asisteDesde>"+
				"<feligresias>"+feligresias+"</feligresias>"+
				"<cargosLlevados>"+cargosLlevados+"</cargosLlevados>"+
				"<cargosAgrado>"+cargosDeseados+"</cargosAgrado>"
				;
			return strPaso3;
		}
	}
}